package io.acna.blog.service;

import io.acna.basedao.mybatis.service.IBaseService;
import io.acna.blog.core.CategoryType;
import io.acna.blog.core.IndieSession;
import io.acna.blog.entities.Category;
import io.acna.mybatis.plugins.core.IndieCondition;

import java.util.List;

public interface ICategoryService extends IBaseService<Category> {

    /**
     * 添加分类
     *
     * @param category 分类实例
     * @param session  session
     */
    void save(Category category, IndieSession session);

    /**
     * 删除分类
     *
     * @param id      分类编号
     * @param session session
     */
    void remove(long id, IndieSession session);

    /**
     * 指定分类下添加文章
     *
     * @param id        分类编号
     * @param articleId 文章编号
     */

    void addArticle(long id, long articleId);

    /**
     * 指定分类下删除文章
     *
     * @param id        分类编号
     * @param articleId 文章编号
     */
    void delArticle(long id, long articleId);

    /**
     * 查询指定类型的分类列表
     *
     * @param condition 查询条件封装
     * @param type      分类类型
     * @return 分类列表
     */
    List<Category> findList(IndieCondition condition, CategoryType type);
}
